class CidadeController {

    int total = 0;

    def index = {
        redirect(action: "create", params: params)
    }

    def create = {
        if(!verificaLogon()){
            return;
        }
        def cidadeInstance     = new Cidade()
        def cidadeInstanceList = Cidade.findAll();

        cidadeInstance.properties = params

        if(cidadeInstanceList){
            total = cidadeInstanceList.count();
        }

        return [cidadeInstance     : cidadeInstance,
                cidadeInstanceList : cidadeInstanceList,
                cidadeInstanceTotal: total];
    }

    def save = {
        if(!verificaLogon()){
            return;
        }
        def cidadeInstance     = new Cidade(params)
        def cidadeInstanceList = Cidade.findAll();

        if(cidadeInstanceList){
            total = cidadeInstanceList.count();
        }

        if (cidadeInstance.save(flush: true)) {
            flash.message = "Dados cadastrados com sucesso!";
            redirect(action: "create");
        }
        else
        {
            render(view:"create",model: [cidadeInstance: cidadeInstance,
                                         cidadeInstanceList: cidadeInstanceList,
                                         cidadeInstanceTotal: total]);
        }
    }

    def edit = {
        if(!verificaLogon()){
            return;
        }
        def cidadeInstance     = Cidade.get(params.id)
        def cidadeInstanceList = Cidade.findAll();

        if(cidadeInstanceList){
            total = cidadeInstanceList.count();
        }

        if (!cidadeInstance) {
            flash.message="Cidade não encontrada!";
            redirect(action: "create");
        }
        else
        {
            return [cidadeInstance     : cidadeInstance,
                    cidadeInstanceList : cidadeInstanceList,
                    cidadeInstanceTotal: total];
        }
    }

    def update = {
        if(!verificaLogon()){
            return;
        }
        def cidadeInstance = Cidade.get(params.id)
        def cidadeInstanceList = Cidade.findAll();

        if(cidadeInstanceList){
            total = cidadeInstanceList.count();
        }
        cidadeInstance.properties = params;
        if (cidadeInstance.save())
        {
            flash.message = "Dados alterados com sucesso.";
            redirect(action: "create");
        }
        else
        {
            render(view:"edit",model: [cidadeInstance     : cidadeInstance,
                                       cidadeInstanceList : cidadeInstanceList,
                                       cidadeInstanceTotal: total]);
        }
    }

    def delete = {
        if(!verificaLogon()){
            return;
        }
        def cidadeInstance = Cidade.findById(params.id);

        if (cidadeInstance) {
            try {
                cidadeInstance.delete(flush: true)
                flash.message = "Registro excluido com sucesso!"
            }
            catch (org.springframework.dao.DataIntegrityViolationException e) {
                flash.message = "${message(code: 'default.not.deleted.message', args: [message(code: 'cidade.label', default: 'Estado'), cidadeInstance.nome])}"
            }
        }
        else {
            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'cidade.label', default: 'Estado'), cidadeInstance.nome])}" //params.id
        }
        redirect(action: "create")
    }


    /*
     * Método que verifica se o usuário está logado.
     * Se não estiver logado é redirecionado para home
     */
    private boolean verificaLogon() {
        if(!session["pessoa"]){
            flash.message = "Você precisa estar logado para acessar esta página.";
            redirect(controller:'login', action:'auth');
            return false;
        }

        return true;
    }

}
